#ifndef __STORE_H
#define __STORE_H

#include "ltv.h"
#include "stdio.h"
#include "string_operation.h"

#define LTV_CODE_BUFF_SIZE  1024*32
//最大模板储存数量
#define MAX_STORE_TEMPLATE_SIZE          16
//每个模板最大数据量
#define MAX_STORE_TEMPLATE_CONTEXT_SIZE          1024

//参数类型定义
#define STORE_TYPE_TEMPLATE             0x01
#define STORE_TYPE_TEMPLATE_CONTENT     0x02
#define STORE_TYPE_FONT                 0x03

//储存类型分类
#define STORE_INDEX                     0xf0
#define STORE_SHELF_AND_CARGO           0xf1
#define STORE_FONT_CODE                 0xf2
#define STORE_TEMPLATE_CONTEXT          0xf3


typedef struct {
    int type;
    char type_name[32];
} STORE_TYPE;

typedef struct {
    char xxx;
} STORE_INDEX_STRUCT;

typedef struct {
    int cargo_sn;
    int cargo_id;
    struct STORE_SHELF_CARGO_STRUCT *next;
} STORE_SHELF_CARGO_STRUCT;
typedef struct {
    int shelf_sn;
    int shelf_id;
    STORE_SHELF_CARGO_STRUCT *cargo;
} STORE_SHELF_STRUCT;

typedef struct {
    unsigned short int template_id;
    unsigned char *template;
    unsigned char *template_context;
    struct STORE_TEMPLATE_CONTEXT_STRUCT *next;
} STORE_TEMPLATE_CONTEXT_STRUCT;

typedef struct {
    unsigned short int font_code;
    unsigned char font_size;
    unsigned short int length;
    unsigned char *font;
    struct STORE_FONT_CODE_STRUCT *next;
} STORE_FONT_CODE_STRUCT;


/**********************************************************************
     储存区域的划分
     1.检索与管理区分为模板、模板参数、字形码、标签设置显示内容
        检索与管理区分为模板、模板参数、字形码、标签设置显示内容
        建议长度：1K
        T 检索 STORE_INDEX
        V
            xxxx
     2.设备ID名称注册号
        设备ID名称注册号与显示：LTV模式
        建议长度：1K-8K
        L
        T 设备ID名称注册号 STORE_SHELF_AND_CARGO
        V
            货架号 货架MAC
            标签1	标签1唯一识别码    关联模板
            标签2	标签1唯一识别码    关联模板
            ...
     3.模板 模板参数
        L:16*1K*2
        T:模板和模板参数 STORE_TEMPLATE_CONTEXT
        V:
            1K模板1：L T：模板ID 数据
            1K模板参数1：L T:模板ID 数据

            1K模板2：L T：模板ID 数据
            1K模板参数2：L T:模板ID 数据
            ....
     4.字形码
        建议长度：1M
        L：总长度
        T 字形码 STORE_FONT_CODE
        V：LTV模式
            Font1: L：数据长度 T:字编码 V: fontSize:1Byte 字形码
            Font2: L：数据长度 T:字编码 V: fontSize:1Byte 字形码
            ....
 **********************************************************************/

void store_init();

void store_show();

int store_param(LTV ltv, int type);

LTV load_param(int type);

STORE_INDEX_STRUCT *get_store_index_struct();

STORE_SHELF_STRUCT *get_store_shelf_and_cargo_struct();

STORE_TEMPLATE_CONTEXT_STRUCT *get_store_template_context_struct();

STORE_FONT_CODE_STRUCT *get_store_font_code_struct();

#endif